#pragma once

#include "../mqcommon/mq_logger.hpp"
#include "../mqcommon/mq_msg.pb.h"



namespace mq{
    //客户端的消费者中的回调函数，是在收到消息推送后该如何处理该消息
    using ConsumerCallBack = std::function<void(const std::string&,BasicProperties *,const std::string &)>;
    struct Consumer
    {
        using ptr = std::shared_ptr<Consumer>;
        std::string _qname; //消费者订阅的队列名称
        std::string _ctag;  //消费者标识
        bool _auto_ack;  //自动应答标志
        ConsumerCallBack _cb;   

        Consumer(){
            DLOG("new Consumer: %p", this);
        }
        Consumer(const std::string &qname,const std::string &ctag,bool auto_ack,const ConsumerCallBack &cb)
            :_qname(qname),_ctag(ctag),_auto_ack(auto_ack),_cb(cb) {
                DLOG("new Consumer: %p", this);
        }
        ~Consumer(){
            DLOG("delete Consumer: %p", this);
        }
    };
};